namespace CSharpPro._1009;

public class Demo
{

    


    public void TestPrint2()
    {
        Console.WriteLine("1000以内的水仙花数有：");

        // 遍历 1 到 999 的所有数字
        for (int num = 1; num < 1000; num++)
        {
            int units, tens, hundreds;
            int total = 0;
            int temp = num; // 临时变量用于计算，不改变原数字

            // 提取个位数
            units = temp % 10;
            temp /= 10;

            if (num < 10)
            {
                // 1 位数都是水仙花数
                Console.WriteLine(num);
                continue;
            }

            // 提取十位数
            tens = temp % 10;
            temp /= 10;

            if (num < 100)
            {
                // 两位数：计算各位数字的 2 次幂之和
                total = (int)(Math.Pow(units, 2) + Math.Pow(tens, 2));
            }
            else
            {
                // 提取百位数
                hundreds = temp % 10;
                // 三位数：计算各位数字的 3 次幂之和
                total = (int)(Math.Pow(units, 3) + Math.Pow(tens, 3) + Math.Pow(hundreds, 3));
            }

            // 判断是否为水仙花数
            if (total == num)
            {
                Console.WriteLine(num);
            }
        }
    }

    public void TestPrint3()
    {
        Console.WriteLine("100以内的质数有：");
        // 遍历2到99的所有数，判断是否为质数
        for (int i = 2; i < 100; i++)
        {
            bool isPrime = true;
            // 从2到i的平方根遍历，判断是否能整除i
            for (int j = 2; j * j <= i; j++)
            {
                if (i % j == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                Console.Write(i + " ");
            }
        }
    }
}